// 异步存储数据到 storage 中
export const setDataToStorage = (key, data) => {
	const dataJson = JSON.stringify(data.value); // 将 cart 数据转换为字符串
	uni.setStorage({
		key: key,
		data: dataJson
	});
};
//test
export const setDataToStorageTest = (key, data) => {
	
	// console.log("datA", data)
    const filteredData = filterData(data); // 过滤数据
	// console.log("filteredData", filteredData)
    if (Object.keys(filteredData).length === 0) {
        console.error('没有有效的数据可存储');
        return;
    }
    const dataJson = JSON.stringify(filteredData); // 将过滤后的数据转换为字符串
	// console.log("dataJson", dataJson)
    return new Promise((resolve, reject) => {
        uni.setStorage({
            key: key,
            data: dataJson,
            success: () => resolve(), // 存储成功解决 Promise
            fail: (error) => {
                console.error('存储失败:', error); // 打印错误
                reject(error);
            }
        });
    });
};

// 异步从 storage 中获取数据
export const getDataFromStorage = (key) => {
	return new Promise((resolve, reject) => {
		uni.getStorage({
			key: key,
			success: function (res) {
				resolve(JSON.parse(res.data)); // 解析字符串为 JavaScript 对象并解决 Promise
			},
			fail:function(error){
				// console.log("1S")
				reject(error);
			}
		});
	});
};

// 阻塞睡眠
export const sleep = (ms) => {
	return new Promise(resolve => setTimeout(resolve, ms));
};

//创建一个函数 filterData，它接收一个对象并返回一个只包含非 null 和非空字符串属性的新对象。
const filterData = (data) => {
    const filteredData = {};
    for (const key in data) {
        if (data[key] !== null && data[key] !== '') { // 只保留非 null 和非空字符串的属性
            filteredData[key] = data[key];
        }
    }
    return filteredData;
};
//计算某天与今天的日差
export const calculateDaysDifference = (dateString) => {
    // 解析传入的日期字符串
    const targetDate = new Date(dateString);
    const currentDate = new Date(); // 获取当前日期

    // 计算两个日期之间的时间差（单位为毫秒）
    const timeDifference = targetDate - currentDate;

    // 计算天数差（1天 = 24小时 * 60分钟 * 60秒 * 1000毫秒）
    const daysDifference = -Math.ceil(timeDifference / (1000 * 3600 * 24));

    return daysDifference;
};